Smartphones and mobile computing have skyrocketed in popularity in recent years, and adoption has reached near-ubiquitous levels. An increased demand for high-quality and robust mobile applications is being driven by a growing user base that performs an increasing number of computing tasks on “smart” devices. Due to this demand, the complexity of mobile applications has been increasing, making development and maintenance challenging. The intense competition present in mobile application (or “app” as it is also known) marketplaces means that if an app is not performing as expected due to bugs or lack of desired features, users are less likely to use the app again and will abandon it for another one with similar functionality.
Software maintenance activities are known to be generally expensive and challenging. One of the most important maintenance tasks is bug report resolution. However, current bug tracking systems rely mostly on unstructured natural language bug descriptions. These descriptions can be augmented with files uploaded by the reporters (e.g., screen shots). As an important component of bug reports, reproduction steps are expected to be reported in a structured and descriptive way, but the quality of this description mostly depends on the reporter's experience and attitude towards providing enough information. Therefore, the reporting process can be cumbersome, and the additional effort to create detailed reports means that many users are unlikely to enhance their reports with extra information.
Consequently, bug reports created with traditional issue tracking systems are currently unstructured and widely vary depending on the reporter's capability and attention to detail, and many software developers believe that bug reports are lacking in information. Further, the information most useful to developers is often the most difficult for reporters to provide and the lack of this information is a major reason behind non-reproducible bug reports. Difficulty providing such information, especially reproduction steps, is compounded in the context of mobile applications due to their complex event-driven and “graphical user interface” (or GUI as used hereinafter) based nature. Furthermore, many bug reports are created from textual descriptions of problems in user reviews. As would be expected, only a reduced set of user reviews can be considered useful and/or informative since reviews do not generally refer to details of the app implementation.
The above issues point to a prominent problem for bug tracking systems in general. That is, there is a lexical gap that exists between bug reporters (e.g., testers, beta users) and developers. Reporters typically only have functional knowledge of an app even if they have development experience themselves, whereas the developers working on an app tend to have intimate code level knowledge. In fact, there is a difference between the way experts and non-experts write bug reports as measured by textual similarity metrics. When a developer reads and attempts to comprehend (or reproduce) a bug report, the developer has to bridge this gap by reasoning about the code level problems from the high-level functional description in the bug report. If the lexical gap is too wide, the developer may not be able to reproduce and/or subsequently resolve the bug report.